﻿using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using TTGame;

/*
 * SceneManager
 *
 *
 *
 * 依赖：
 *
 * ！不写重复代码！
 * @author TTun
 * @date 9/14/2017 9:36:50 AM
 */
namespace TTGameEngine {
public class SceneManager: MonoBehaviour {
    public string curSceneName;
    public int curSceneID = -1;
    public string sceneBGM;

    static SceneManager m_instance;
    static public SceneManager Share() {
        if(m_instance == null) {
            m_instance = GameLauncher.Self.AddLogicScript<SceneManager>();
        }
        return m_instance;
    }

    public void EnterBattle(string sceneName, int sceneID, string BGM) {
        curSceneName = sceneName;
        curSceneID = sceneID;
        sceneBGM = BGM;
        DebugUtil.LogErrorFormat("[SceneMgr] 切关:{0} ID:{1}", curSceneName, curSceneID);
        if(string.IsNullOrEmpty(curSceneName)) {
            DebugUtil.LogErrorFormat("[SceneMgr] 切关错误：关卡名为空。");
        } else {
            StartCoroutine(c_loadScene(curSceneName));
        }
    }

    void setupAudio() {
//         if(string.IsNullOrEmpty(sceneBGM) == false) AudioManager.Ins.PlayBGM(sceneBGM);
//
//         int soundValue = LTPlayerPrefs.Instance.GetInt(TypeDefinition.EFFECT_MUSIC_ON, 1);
//         AudioManager.Ins.EnableSounds(soundValue == 0 ? false : true);
//
//         int musicValue = LTPlayerPrefs.Instance.GetInt(TypeDefinition.BG_MUSIC_ON, 1);
//         AudioManager.Ins.EnableBGM(musicValue == 0 ? false : true);
    }

    IEnumerator c_loadScene(string sceneName) {
//         DebugUtil.LogFormat("[SceneMgr] 切关加载开始name[{0}] sceneid[{1}]", sceneName, SceneManager.Share().curSceneID);
//         //关闭镜头，加载完之后开启镜头
//         CameraControl.IsLoading = true;
//         //关闭音乐，加载完之后加载音乐设置
//         AudioManager.Ins.EnableSounds(false);
//         AudioManager.Ins.EnableBGM(false);
//
//         UnityEngine.SceneManagement.SceneManager.LoadScene("EmptyScene");
//         System.GC.Collect();
//         // UGUIManager.GetInstance().HideForm(FormID.FormID_HUD);
//         // UGUIManager.GetInstance().HideForm(FormID.FormID_CityMap);
//
//         //7010000指引时，由于没有loading界面，会出现camera的位置没有初始好就展现出来。
//         //采用延迟关闭前面cg页面的方式，cg页面放在BattleManager.StartBattle里，camera一初始化好就关闭。
//         //关闭之前的页面，也不能hideAll，因为有其他指引UI。
//         if(SceneManager.Share().curSceneID != 7010000) {
//             UGUIManager.GetInstance().HideAllShownForm();
//             Loading2View.OpenLoad2(null);
//         } else {
//             //战斗结束后再加载CG
//             Loading2View.OpenLoad2(null, () => {
//                 if(SceneManager.Share().curSceneID == 7010000) {
//                     BattleManager.Share().initGuides();
//                 }
//             });
//         }
//         var async = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(sceneName);
//         Loading2View loadingView = UGUIManager.GetInstance().GetGameFormScript<Loading2View>(FormID.FormID_Loading2);
//         loadingView.setAsyncOper(async);
//         loadingView.setProgress(0.2f);
//
//         if(BattleServerData.IsServerDataOK()) {
//             DebugSetting.Self.Debug_LocalScene = false;
//         }
//         while(BattleManager.Share() == null)
//             yield return null;
//
//         loadingView.setProgress(0.5f);
//
//         float oldValue = DebugSetting.Self.LoadFPSTimeLimit;
//         DebugSetting.Self.LoadFPSTimeLimit = 100f;
//         //初始化战斗，等待加载战斗内容
//         BattleManager.Share().InitBattle();
//         //打开战斗Form
//         UGUIBattleForm.OpenForm(InitAfterBattleUIOK);
//         float LimitTimeMax = 2f;
//         float curLimitTime = 0f;
//         yield return null;
//         loadingView.setProgress(0.7f);
//
//         while(ObjectRecycler.Instance.IsLoading() && curLimitTime < LimitTimeMax) {
//             curLimitTime += Time.deltaTime;
//             yield return null;
//         }
//
//         loadingView.setProgress(0.9f);
//         DebugSetting.Self.LoadFPSTimeLimit = oldValue;
//         //打开Camera
//         BattleManager.Share().GetSceneCameraCtrl().LoadingOKStartRender();
//         //关闭LoadingView
//         loadingView = UGUIManager.GetInstance().GetGameFormScript<Loading2View>(FormID.FormID_Loading2);
//         if(loadingView != null) loadingView.LoadOKImm();
//         //设置音乐
//         setupAudio();
//         //！战斗开始！
//         BattleManager.Share().StartBattle();
//
//         DebugUtil.Log("Scene Load OK");
        yield break;
    }

    //先打开场景和UI，再初始化，尽早的结束加载页面，展现出新场景画面。
//     void InitAfterBattleUIOK(UIForm f) {
//
//         BattleManager.Share().InitAfterBattleUIOK();
//         TTUnityPlugin.NotificationCenter.Share().PostNotification(TypeDefinition.MSG_SCENE_TRANSLATION_COMPLETE2);
//     }
}
}